package com.hsxc.cdz.base.dao;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.hsxc.cdz.base.bean.Station;

/**
* @author 陈钊
* @version 创建时间：2016年6月1日 下午4:26:09
* 类说明：
*/
@Repository
public class StationDao {
        
	    /***********************************************************************/
	    //自动注入SqlSessionTemplate类的实例
		@Autowired  
		private SqlSessionTemplate sqlSessionTemplate;
		
		/***********************************************************************/
		//操作充电站的增，删，改，查。
		
		/**
		 * 插入一个充电站
		 * @param station
		 * @return
		 */
		public int insertStation(Station station){
			return sqlSessionTemplate.insert("insertStation", station);
		}
		
		/**
		 * 根据电站编号删除充电桩
		 * @param stationNO
		 * @return
		 */
		public int deleteStation(String stationNO) {
			return sqlSessionTemplate.delete("deleteStation", stationNO);
		}
		
		/**
		 * 更新一个或多个充电站数据
		 * @param station 充电站的部分数据
		 * @return 更新影响的充电站的数量
		 */
		public int updateStation(Station station){
			return sqlSessionTemplate.update("updateStation", station);
		}
		
		/**
		 * 根据充电站的部分信息查找单个充电站的全部信息
		 * @param station 充电站的部分信息
		 * @return 充电站的全部信息，当为null时，表示未找到符合的电站
		 */
		public Station selectStation (Station station) {
			return sqlSessionTemplate.selectOne("selectStation", station);
		}
		
		/**
		 * 根据充电站的部分信息查找符合的全部的充电站的全部信息
		 * @param station 充电站的部分信息
		 * @return 多个充电站全部信息，放返回为null时，表示未找到符合的电站
		 */
		public List<Station> selectStations (Station station){
			return sqlSessionTemplate.selectList("selectStation", station);
		}

		/**
		 * 根据经纬度范围查询充电站
		 */
		public  List<Map<String,Object>> selectByLatLong(Map<String,Double> map) {
			return sqlSessionTemplate.selectList("selectBylatlong",map);
		}
		/**
		 * 根据电站管理员查找电站编号
		 * @param mgrName
		 * @return
		 */
		public List<String> getStationNOByName(String mgrName){
			return sqlSessionTemplate.selectList("getStationNOByName",mgrName);
		}
		
		public String getStationAddressByStatioNo(String stationNo){
			return sqlSessionTemplate.selectOne("selectAddress",stationNo);
		}
		public List<Map<String,Object>> getStationByName(Station station){
			return sqlSessionTemplate.selectList("selectNameLikely",station);
		}
}
